package com.empire.module.rainbow.dal.mysql.diytemplate;

import com.empire.framework.common.pojo.PageResult;
import com.empire.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.empire.framework.mybatis.core.mapper.BaseMapperX;
import com.empire.module.rainbow.controller.app.diy.vo.AppRainbowDiyTemplatePageReqVO;
import com.empire.module.rainbow.dal.dataobject.diytemplate.RainbowDiyTemplateDO;
import org.apache.ibatis.annotations.Mapper;

/**
 * 六彩-装修模板 Mapper
 *
 * @author  wudi
 */
@Mapper
public interface RainbowDiyTemplateMapper extends BaseMapperX<RainbowDiyTemplateDO> {

    default PageResult<RainbowDiyTemplateDO> selectPage(AppRainbowDiyTemplatePageReqVO reqVO) {
        return selectPage(reqVO, new LambdaQueryWrapperX<RainbowDiyTemplateDO>()
                .likeIfPresent(RainbowDiyTemplateDO::getName, reqVO.getName())
                .eqIfPresent(RainbowDiyTemplateDO::getUsed, reqVO.getUsed())
                .betweenIfPresent(RainbowDiyTemplateDO::getUsedTime, reqVO.getUsedTime())
                .betweenIfPresent(RainbowDiyTemplateDO::getCreateTime, reqVO.getCreateTime())
                .orderByDesc(RainbowDiyTemplateDO::getUsed) // 排序规则1：已使用的排到最前面
                .orderByDesc(RainbowDiyTemplateDO::getId)); // 排序规则2：新创建的排到前面
    }

    default RainbowDiyTemplateDO selectByUsed(boolean used) {
        return selectOne(RainbowDiyTemplateDO::getUsed,used);
    }

    default RainbowDiyTemplateDO selectByName(String name) {
        return selectOne(RainbowDiyTemplateDO::getName, name);
    }
}
